package com.lgc.javathread.locktest.interruptTest.interruptTest2;

public class Program {
    //interrupt（）方法。给线程设置中断标志
    // 不要以为它是中断某个线程！它只是线线程发送一个中断信号，让线程在无限等待时（如死锁时）能抛出抛出，从而结束线程，但是如果你吃掉了这个异常，那么这个线程还是不会中断的！

    //interrupted（）方法。检测中断并清除中断状态，注意作用于“当前”线程
    // 作用是测试当前线程是否被中断（检查中断标志），返回一个boolean并清除中断状态，第二次再调用时中断状态已经被清除，将返回一个false。

    //isInterrupted（）方法。只检测中断
    // 作用是只测试此线程是否被中断 ，不清除中断状态。

    public static void main(String[] args) {
        MyThread thread = new MyThread();
        thread.start();

        thread.interrupt();

        //从结果可以看出调用interrupt（）方法后，线程仍在继续运行，并未停止，
        // 但已经给线程设置了中断标志，两个isInterrupted（）方法都会输出true，也说明isInterrupted（）方法并不会清除中断状态。
        System.out.println("第一次调用thread.isInterrupted()：" + thread.isInterrupted()); //true
        System.out.println("第二次调用thread.isInterrupted()：" + thread.isInterrupted()); //true
        System.out.println("thread是否存活：" + thread.isAlive());

        //sleep等待一秒，等myThread运行完
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("myThread线程是否存活：" + thread.isAlive());

    }
}
